16.4 Sensor 0220: Mesura de CO2, Temperatura i Humitat + Exemple amb dades
Vols mesurar la Concentració de CO2, la Temperatura i la Humitat relativa.
Et caldrà fer aquest muntatge per enregistrar les dades a una MicroSDHC integrada a una shield connectada a Arduino.
El programa serà aquest.
// Enregistrat en una MicroSDHC de la concentració de CO2 llegida pel sensor SEN0220 i de la Temperatura i Humitat amb el RHT03
// Per fer aquest programa s'han gastat les fonts que segueixen
// Font1: http://playground.arduino.cc/Main/DHT11Lib
// Font2: https://www.arduino.cc/en/Tutorial/Files
// Font3= https://www.dfrobot.com/wiki/index.php/Infrared_CO2_Sensor_0-50000ppm_SKU:_SEN0220
// created Nov 2010 by David A. Mellis
// modified 9 Apr 2012 by Tom Igoe
// Created Tiequan Shao: tiequan.shao@sandboxelectronics.com
// Created Peng Wei: peng.wei@sandboxelectronics.com
// Modified by Leff from DFRobot, leff.wei@dfrobot.com, 2016-4-21, make the algorithm clearer to user
// Created at 2016-6-6 by lg.gang(lg.gang@qq.com)
// Modificat el 26 de març de 2017 per Carles Ferrando
#include <SD.h>
File myFile;
#include <dht.h>
dht DHT;
#define DHT22_PIN 7
#include <Time.h>
//Definim temperatura i humitat relativa reals mesurades pel sensor RHT03
float temperatura; // T en ºC
float humitat; // Humitat relativa %
//Definim la data i hora per configurar el rellotge
int hora;
int minut;
int segon;
int dia;
int mes;
int any;
float valorRealCO2 ; // CO2 en ppm
#include <SoftwareSerial.h>
SoftwareSerial mySerial(5, 6); // RX, TX
unsigned char hexdata[9] = {0xFF,0x01,0x86,0x00,0x00,0x00,0x00,0x00,0x79}; //Read the gas density command /Don't change the order
void setup()
{
Serial.begin(9600);
while (!Serial) {
}
mySerial.begin(9600);
//setTime(hr,min,sec,day,month,yr); // CAL POSAR L-HORA REAL I LA DATA AL COMENÇAR LA CLASSE A LA RATLLA DE SOTA
setTime(17,10 ,00,26,3,2017); // CAL POSAR L-HORA REAL I LA DATA AL COMENÇAR LA CLASSE ************************************************
Serial.println("IES Gabriel Ciscar Aula Tecnologia 3");
Serial.print("Initializing SD card...");
// On the Ethernet Shield, CS is pin 4. It's set as an output by default.
// Note that even if it's not used as the CS pin, the hardware SS pin
// (10 on most Arduino boards, 53 on the Mega) must be left as an output
// or the SD library functions will not work.
pinMode(10, OUTPUT);
if (!SD.begin(10)) {
Serial.println("Initcializacio feta!");
return;
}
Serial.println("initcializacio feta.");
if (SD.exists("dades.txt")) {
Serial.println("dades.txt existeix.");
}
else {
Serial.println("dades.txt no existeix.");
}
// Obre un fitxer nou i tanca'l de forma immediata:
Serial.println("Creant dades.txt...");
myFile = SD.open("dades.txt", FILE_WRITE);
myFile.close();
// Comprova si el fitxer existeix:
if (SD.exists("dades.txt")) {
Serial.println("dades.txt existeix.");
}
else {
Serial.println("dades.txt no existeix.");
}
}
void loop()
{
// Actualitza l_hora a partir de l_hora configurada al setTime
time_t t = now();
hora = hour(t);
minut= minute(t);
segon= second(t);
dia = day(t);
mes= month(t);
any= year(t);
// Llegeix les dades de Temperatura i Humitat
int chk = DHT.read22(DHT22_PIN);
humitat=DHT.humidity ;
temperatura= DHT.temperature;
//Bloc CO2 espectrometre
mySerial.write(hexdata,9);
delay(10000);//temps entre dues mesures de dades 10 segons **************************************************************************
for(int i=0,j=0;i<9;i++)
{
if (mySerial.available()>0)
{
long hi,lo, CO2;
int ch=mySerial.read();
if(i==2){ hi=ch; } //High concentration
if(i==3){ lo=ch; } //Low concentration
if(i==8) {
CO2=hi*256+lo; //CO2 concentration
valorRealCO2 = CO2;
//Serial.print("CO2 concentration: ");
//Serial.print(CO2);
//Serial.println("ppm");
}
}
} //Final bloc espectrometre
// Mostra les dades pel terminal serie
File dataFile = SD.open("dades.txt", FILE_WRITE);
Serial.print(dia);
Serial.print("/");
Serial.print(mes);
Serial.print("/");
Serial.print(any);
Serial.print(" ");
Serial.print(hora);
Serial.print(":");
Serial.print(minut);
Serial.print(":");
Serial.print(segon);
Serial.print(" ");
Serial.print(";");
Serial.print(" ");
Serial.print(temperatura);
Serial.print(" ");
Serial.print(";");
Serial.print(" ");
Serial.print(humitat);
Serial.print(" ");
Serial.print(";");
Serial.print(" ");
Serial.println(valorRealCO2 );
//Guarda les dades a la targeta SD
if (dataFile) {
dataFile.print(dia);
dataFile.print(" ");
dataFile.print(";");
dataFile.print(" ");
dataFile.print(mes);
dataFile.print(" ");
dataFile.print(";");
dataFile.print(" ");
dataFile.print(any);
dataFile.print(" ");
dataFile.print(";");
dataFile.print(" ");
dataFile.print(hora);
dataFile.print(" ");
dataFile.print(";");
dataFile.print(" ");
dataFile.print(minut);
dataFile.print(" ");
dataFile.print(";");
dataFile.print(" ");
dataFile.print(segon);
dataFile.print(" ");
dataFile.print(";");
dataFile.print(" ");
dataFile.print(temperatura);
dataFile.print(" ");
dataFile.print(";");
dataFile.print(" ");
dataFile.print(humitat);
dataFile.print(" ");
dataFile.print(";");
dataFile.print(" ");
dataFile.println(valorRealCO2);
dataFile.close();
}
else {
Serial.println("Error en obrir el fitxer");
// if the file didn't open, do something here
}
}
El programa també els tens ací en format TiHCO2-NDIR-File.zip (zip - 2295 B)
Exemple amb dades reals:
Hem tancat una lletuga en un recipient tancat durant 3 dies i hem provat el programa anterior amb els sensors de temperatura, humitat i de CO2.
Ací tens un diagrama amb la temperatura en º Centigrads durant els 3 dies que va durar l'experiment.
Ací tens un diagrama amb la humitat relativa en % durant els 3 dies que va durar l'experiment.
Ací tens un diagrama amb la concentració de CO2 en ppm durant els 3 dies que va durar l'experiment.
Ací tens un diagrama amb la concentració de O2 en ppm durant els 3 dies que va durar l'experiment.
1) Pots relacionar les gràfiques de Humitat, Concentració de CO2 i Concentració de O2 en cada tram de la gràfica amb les equacions químiques de la respiració i la fotosíntesi?
Fotosintesis:\quad \quad 6 \quad CO_2 \quad + \quad 6 \quad H_2O \quad + \quad llum \quad \to \quad C_6H_{12} O_6 \quad (glucosa) \quad + \quad 6 \quad O_2
Respiracio: \quad \quad C_6H_{12}O_6 \quad (sucre) \quad + \quad 6 \quad O_2 \to \quad 6 \quad CO_2 \quad + \quad 6 \quad H_2O \quad + \quad energia \quad (ATP)
2) Pots relacionar la llum que rep la lletuga amb la gràfica de la temperatura en cada tram, i relacionar-ho amb les altres gràfiques?
Llicenciat sota la Llicència Creative Commons Reconeixement NoComercial CompartirIgual 3.0